#include "application.h"

int UVA_flag = 0,N = 0;
uint8_t map[3] = {45,21,35};

//OLED后续可以考虑用宏定义注释，单纯就是用来参看实时数据，可以考虑用log优化，
//还要注意DSPLingk的启动文件编写，VSCODe是通过Openocd做Daplingk的索引，具体可以参考湖大开源的电控框架
//对于.json的文件配置语法这里没有做深入学习，感觉其中有部分类容需要掌握.
//以及makefile文件的学习，还有大部分地方没有理解，后续可以考虑尝试学习一下 
void ApplicationInit()
{
  OLED_Init();
  Show_Static();
  logic_Init();
  initRingBuffer();
}
/** 
  * @brief 人机交互系统，只用来用户界面
  * @pre MPU6050，LED，ADC，Encoder，PWM
  * */ 
void ApplicationTask()
{
    Show_Dynamic();



    //保留按键发送函数
    if(KEY_TEXT.Key_Type == Double_Key)
    {
        UVA_flag = 1;
    }
    else if(KEY_TEXT.Key_Type == Long_Key)
    {        
      logic_task(Map_Mode);
      UVA_flag = 2;
    }
    else if (KEY_2.Key_Type == Double_Key)
    {
      Animal_N++;
      if(Animal_N > 3) Animal_N = 1;
      HAL_Delay(10);
    }
    if(UVA_flag == 1)
    {

    }
    else if(UVA_flag == 2)
    {        
        uint8_t Buff[2] = {0xFE,0xEE};
        USARTSend(&Usart_2_4G,Buff,2,USART_TRANSFER_DMA);
        if(Temp[60] != 0)
        {
          Draw_Line();
          UVA_flag = 0;
        }        
    }
    else if(Screen_date.fly_state == Ready_Fly)
    {
        logic_task(Logic_Mode); 
        Screen_date.fly_state = Mid_Flight;
    }
    else if(UVA_flag == 3)
    {
      UVA_flag = 0;
    }
    else if (UVA_flag == 4)
    {

      UVA_flag = 0;
    }
    Show_Text();
    UsartSCreenData(&Screen_date.Data);
    Animal_Date_Processing(UVA_date.Mid_Date);
    Animal_Location(UVA_date.Mid_Date);
    OLED_Update();
}

